/*手撕：把符合下列属性的数组 arr 称为 山脉数组 ： arr.length >= 3 存在下标 
i（0 < i < arr.length - 1），满足 arr[0] < arr[1] < ... < arr[i - 1] < arr[i] arr[i] 
> arr[i + 1] > ... > arr[arr.length - 1] 给出一个整数数组 arr，返回最长山脉子数组的长度。
如果不存在山脉子数组，返回 0 。 示例 1： 输入：arr = [2,1,4,7,3,2,5] 输出：5 
解释：最长的山脉子数组是 [1,4,7,3,2]，长度为 5。 示例 2： 输入：arr = [2,2,2] 输出：0 解释：不存在山脉子数组。*/
function longestMountain(arr) {
    if (arr.length < 3) {
        return 0; // 数组长度小于3，不可能形成山脉
    }
    let maxLength = 0;
    for (let i = 1; i < arr.length - 1; i++) {
        // 检查当前元素是否是可能的山顶
        if (arr[i - 1] < arr[i] && arr[i] > arr[i + 1]) {
            let left = i - 1;
            let right = i + 1;
            // 向左扩展山脉
            while (left > 0 && arr[left - 1] < arr[left]) {
                left--;
            }
            // 向右扩展山脉
            while (right < arr.length - 1 && arr[right] > arr[right + 1]) {
                right++;
            }
            // 计算山脉长度（包括山顶）
            const mountainLength = right - left + 1;
            maxLength = Math.max(maxLength, mountainLength);
        }
    }

    return maxLength;
}
// 示例测试
console.log(longestMountain([2, 1, 4, 7, 3, 2, 5])); // 输出: 5
console.log(longestMountain([2, 2, 2])); // 输出: 0